"""
https://leetcode.cn/problems/reverse-words-in-a-string-iii/description/
557. 反转字符串中的单词 III
简单
相关标签
相关企业
给定一个字符串 s ，你需要反转字符串中每个单词的字符顺序，同时仍保留空格和单词的初始顺序。



示例 1：

输入：s = "Let's take LeetCode contest"
输出："s'teL ekat edoCteeL tsetnoc"
示例 2:

输入： s = "Mr Ding"
输出："rM gniD"


提示：

1 <= s.length <= 5 * 104
s 包含可打印的 ASCII 字符。
s 不包含任何开头或结尾空格。
s 里 至少 有一个词。
s 中的所有单词都用一个空格隔开。
"""
from typing import List


class Solution:
    def reverseWords(self, s: str) -> str:
        left=0
        all_lis=[]
        for i in range(len(s)):
            if s[i]==' ':
                lis=self.swap_sub(s,left,i-1)
                left=i+1
                all_lis.extend(lis)
                all_lis.append(' ')
                continue
            if i==len(s)-1:
                lis = self.swap_sub(s, left, i)
                all_lis.extend(lis)

        return ''.join(all_lis)

    def swap_sub(self,s:str,start:int,end:int)->list:
        lis=list()
        for i in range(end,start-1,-1):
            lis.append(s[i])

        return lis


if __name__ == '__main__':
    sol=Solution()

    s="Mr  Ding "
    result=sol.reverseWords(s)
    print(result)

    pass